package com.atguigu.stgy.model.entity;

import com.atguigu.stgy.model.base.BaseEntity;
import com.baomidou.mybatisplus.annotation.*;
import io.swagger.v3.oas.annotations.media.Schema;
import java.util.Date;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;

/**
    * 员工信息表
    */
@Schema(description="员工信息表")
@Data
@EqualsAndHashCode(callSuper=true)
@AllArgsConstructor
@NoArgsConstructor
@TableName(value = "`system_user`")
public class SystemUser extends BaseEntity {
    /**
     * 用户名
     */
    @TableField(value = "username")
    @Schema(description="用户名")
    private String username;

    /**
     * 密码
     *  mybatisplus默认 不会更新null的属性值  sql中set列表会忽略 null属性
     *
     *  但是 查询数据时password和salt都置空 返回给前端，前端没有修改密码提交修改请求 提交的json中不包含password和salt
     *
     *  后端jacson接受时  会给password和salt赋值空字符串
     *
     *
     *  updateStrategy = FieldStrategy.NOT_EMPTY：
     *          更新策略   当标注的属性值满足更新策略要求时 才会更新
     */
    @TableField(value = "`password`" , updateStrategy = FieldStrategy.NOT_EMPTY)
    @Schema(description="密码")
    private String password;
    @TableField(value = "`salt`" , updateStrategy = FieldStrategy.NOT_EMPTY)
    @Schema(description="盐")
    private String salt;
    /**
     * 姓名
     */
    @TableField(value = "`name`")
    @Schema(description="昵称")
    private String name;

    /**
     * 用户类型
     */
    @TableField(value = "`type`")
    @Schema(description="用户类型")
    private Byte type;

    /**
     * 手机号码
     */
    @TableField(value = "phone")
    @Schema(description="手机号码")
    private String phone;

    /**
     * 头像地址
     */
    @TableField(value = "avatar_url")
    @Schema(description="头像地址")
    private String avatarUrl;

    /**
     * 备注信息
     */
    @TableField(value = "additional_info")
    @Schema(description="备注信息")
    private String additionalInfo;

    /**
     * 岗位id
     */
    @TableField(value = "post_id")
    @Schema(description="岗位id")
    private Long postId;

    /**
     * 账号状态
     */
    @TableField(value = "`status`")
    @Schema(description="账号状态")
    private Byte status;

}